package com.skyline.search.search;

import org.apache.lucene.analysis.Analyzer;
import com.skyline.search.model.Page;
import com.skyline.search.model.ResultSet;

/**
 * Class <code>Searcher</code> 用户通过Searcher来查询
 * 
 * @author Jairus Chan
 * @version 0.1, 11/30/10
 * @since JDK1.6
 */

public interface Searcher {

	/**
	 * inital(String indexPath) 初始化Searcher
	 * 
	 * @param indexPath
	 *            初始化路径
	 * @return
	 */
	public void inital(String indexPath);

	/**
	 * search(String queryString, Page page,String[] fields, Analyzer analyzer)
	 * 通过给定的Analyzer查询
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @param analyzer
	 *            查询所用的Analyzer
	 * @return ResultSet
	 */
	public ResultSet search(String queryString, Page page, String[] fields,
			Analyzer analyzer);

	/**
	 * searchWithStandardAnalyzer(String queryString, Page page,String[] fields)
	 * 通过Lucene的标准Analyzer查询，内部实现是通过调用search()方法
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @return ResultSet
	 */
	public ResultSet searchWithStandardAnalyzer(String queryString, Page page,
			String[] fields);

	/**
	 * searchWithDefaultAnalyzer(String queryString, Page page,String[] fields)
	 * 通过用户自定义的默认Analyzer查询，内部实现是通过调用search()方法
	 * 
	 * @param queryString
	 *            查询词条
	 * @param page
	 *            用于记录查询的分页信息
	 * @param fields
	 *            所需查询的字段
	 * @return ResultSet
	 */
	public ResultSet searchWithDefaultAnalyzer(String queryString, Page page,
			String[] fields);
}
